#ifndef Componente_h__
#define Componente_h__

#include <GL/glui.h>

#include "Materiais.h"
#include "Texturas.h"
#include "Transformacoes.h"
#include "Primitiva.h"
#include <vector>

using std::vector;

class Componente {

private:

	vector<Materiais*> materiais;
	vector<Primitiva*> primitivas;
	vector<Componente*> componentes;
	Texturas *textura;
	Transformacoes *transformacao;
	string id_comp;

public:
	Componente(){
		materiais.clear();
	}
	Componente(vector<Primitiva*> primitivas, vector<Materiais*> materiais, Texturas *tex, Transformacoes *transf);

	void setId(string id_comp) {
		this->id_comp = id_comp;
	}
	string getId() {
		return this->id_comp;
	}
	void aplica();

	vector<Materiais*> getMateriais() {
		return this->materiais;
	}
	void setTextura(Texturas *t) {
		this->textura = t;
	}
	void setTransformcao(Transformacoes *tr){
		transformacao = tr;
	}
	void addMaterial(Materiais *m){
		materiais.push_back(m);
	}

	void addPrimitiva(Primitiva *p){
		primitivas.push_back(p);
	}
	void addComponente(Componente *c){
		componentes.push_back(c);
	}
	void leVectorMateriais() {
		cout << "IMPRIME MATERIAIS" << endl;
		for( vector<Materiais*>::iterator it = materiais.begin(); it != materiais.end(); it++) {
			cout << "material: " << (*it)->getInherit() << endl;
		}
		cout << "JA IMPRIMIU" << endl;
	}
	void setMateriais(vector<Materiais*> m) {
		this->materiais = m;
	}
};
#endif //Componente_h__